#include "base.h"
#include "stack"

class Solution
{
public:
    int longestValidParentheses(string s)
    {
        stack<int> st;
        // buf.resize(s.size(), 0);
        // int buf_begin = 0, buf_end = 0;
        for (int i = 0; i < s.size(); i++)
        {
            auto c = s[i];
            if (c == '(')
            {
                st.push(i);
                // buf[buf_end] = c;
                // buf_end++;
            }
            else
            {
                if (!st.empty())
                {
                    s[st.top()] = '1';
                    s[i] = '1';
                    st.pop();
                }
                // buf_begin = buf_end;
            }
        }
        int cnt = 0, max_cnt = 0;
        for (auto c : s)
        {
            if (c == '1')
            {
                cnt++;
            }
            else
            {
                if (cnt > max_cnt)
                {
                    max_cnt = cnt;
                }
                cnt = 0;
            }
        }
        if (cnt > max_cnt)
        {
            return cnt;
        }
        return max_cnt;
    }
};

int main()
{
    Solution().longestValidParentheses("(()");
    return 0;
}